$(function() {
    $("#botonModalAgregarServicio").click(function() {
        resetALLFormConsumo();
    });
    $("#botonModalAgregarCargoExtra").click(function() {
        $("#modalAgregarCargoExtra").modal();
    });



    $("#categoria").change(function() {
        resetFormConsumo();
        if ($(this).val() == "") {
            $("#productoServicio").html("").attr('readonly', true);

        }
        else {
            $("#productoServicio").val("");
            cargarProductosServicios($(this).val());
        }
    });
    $("#productoServicio").change(function() {
        resetFormConsumo();
        if ($(this).val() == "") {

        } else {
            var select = $(this).find('option:selected');
            var valorunitario = select.attr("data-valorunitario");

            var selectCategoria = $("#categoria").find('option:selected');
            var tieneInventario = selectCategoria.attr("data-tieneinventario");
            if (tieneInventario == 1) {
                var cantidadActual = select.attr("data-cantidadActual");
                $("#ayudaCantidad").html(cantidadActual + " en inventario.");
            } else {
                $("#ayudaCantidad").html("");
            }
            $("#cantidad").attr('readonly', false);
            $("#precioUnitario").val(valorunitario);
            calcularTotalSubTotal();
        }

    });

    $("#descuento").change(function() {
        var descuento = parseFloat($(this).val());
        var subtotal = parseFloat($("#subtotal").val());
        if (descuento > subtotal) {
            $(this).val("0");
        }
        calcularTotalSubTotal();
    });


    $("#cantidad").change(function() {
        $("#advertenciaCantidad").hide();
        if ($(this).val() == "" || $(this).val() == 0) {
            $(this).val("");
            $("#subtotal").val("");
            $("#total").val("");
            $("#descuento").val("");
            $("#descuento").attr('readonly', true);
        }
        else {
            var selectCategoria = $("#categoria").find('option:selected');
            var tieneInventario = selectCategoria.attr("data-tieneinventario");
            if (tieneInventario == 1) {
                var select = $("#productoServicio").find('option:selected');
                var cantidadActual = select.attr("data-cantidadActual");
                if (parseInt($(this).val()) <= parseInt(cantidadActual)) {
                    calcularTotalSubTotal();
                    $("#descuento").val("0");
                    $("#descuento").attr('readonly', false);
                }
                else {
                    $(this).val("");
                    $("#advertenciaCantidad").show();
                    $("#subtotal").val("");
                    $("#descuento").val("");
                    $("#descuento").attr('readonly', true);
                    $("#total").val("");

                }
            } else {
                calcularTotalSubTotal();
                $("#descuento").val("0");
                $("#descuento").attr('readonly', false);
            }

        }
    });
    $("#impuestos .checkbox").change(function() {
        calcularTotalSubTotal();
    });

    $("#enviarForm").click(function() {
        if (validarFormularioAfter("formConsumos")) {
            $("#formConsumos").submit();
        }
    });

    $("#tablaListarConsumos a.eliminarConsumo").click(function() {
        var idVentaServicio = $(this).data("id-venta-servicio");
        var nombreCompleto = $(this).data("nombre-completo");
        var idCategoriaProducto = $(this).data("id-categoria-producto");
        var idServicio = $(this).data("id-servicio");
        $("#id-venta-servicio").val(idVentaServicio);
        $("#nombre-huesped-consumo").html(nombreCompleto);
        $("#id-categoria-producto").val(idCategoriaProducto);
        $("#id-servicio").val(idServicio);

    });

    $("#tablaListarPago a.eliminarPago").click(function() {
        $("#id-pago").val($(this).data("id-pago"));
        $("#modalEliminarPago").modal();
    });

    $("#tablaListarAjuste a.eliminarAjuste").click(function() {
        $("#id-ajuste").val($(this).data("id-ajuste"));
        var tipo = $(this).data("tipo");
        if (tipo == "total") {
            $("#formEliminarAjustes").attr("action", "eliminarAjusteTotal");
        } else if (tipo == "alojamiento") {
            $("#formEliminarAjustes").attr("action", "eliminarAjusteAlojamiento");
        }
        $("#modalEliminarAjuste").modal();
    });

    function cargarProductosServicios(categoria) {
        $.ajax({
            url: "cargarProductosServicios",
            data: {
                categoria: categoria
            },
            type: 'POST',
            success: function(data) {
                var select = [];
                if (data != "[]") {
                    data = JSON.parse(data);
                    $("#productoServicio").attr('readonly', false);
                    select.push("<option value=''>Seleccionar...</option>");
                    $.each(data, function(i, j) {
                        select.push("<option value='" + j.id_servicio + "' data-valorUnitario='" + j.valor + "' data-cantidadActual='" + j.cantidad_actual + "'>" + j.nombre + "</option>");
                    });

                }
                select = select.join("");
                document.getElementById('productoServicio').innerHTML = select;
            }
        });
    }

    function calcularTotalSubTotal() {

        var precioUnitario = $("#precioUnitario").val();
        var cantidad = $("#cantidad").val();
        if (precioUnitario != "" && cantidad != "") {
            precioUnitario = parseFloat(precioUnitario);
            cantidad = parseFloat(cantidad);
            var subTotal = precioUnitario * cantidad;
            $("#subtotal").val(subTotal);
            var totalImpuesto = 0;
            var descuento = $("#descuento").val();
            $('#impuestos .checkbox').each(function() {
                if ($(this).is(':checked')) {
                    var valorImpuesto = parseFloat($(this).data("valor"));
                    totalImpuesto = totalImpuesto + valorImpuesto * (subTotal - descuento) / 100;
                }
            });

            var total = subTotal + totalImpuesto - descuento;
            $("#total").val(total);
        }
    }
    function resetFormConsumo() {
        $("#precioUnitario").val("");
        $("#cantidad").val("");
        $("#cantidad").attr('readonly', true);
        $("#ayudaCantidad").html("");
        $("#advertenciaCantidad").hide();
        $("#descuento").val("");
        $("#descuento").attr('readonly', true);
        $("#subtotal").val("");
        $("#total").val("");


    }
    function resetALLFormConsumo() {
        $("#cliente").val("");
        $("#categoria").val("");
        $("#productoServicio").val("");
        $("#precioUnitario").val("");
        $("#cantidad").val("");
        $("#cantidad").attr('readonly', true);
        $("#ayudaCantidad").html("");
        $("#advertenciaCantidad").hide();
        $("#descuento").val("");
        $("#descuento").attr('readonly', true);
        $("#subtotal").val("");
        $('#impuestos .checkbox').each(function() {
            $(this).attr('checked', false);
        });
        $("#total").val("");
    }
});